#!/bin/sh

. $LKP_SRC/lib/reproduce-log.sh
. $LKP_SRC/lib/upload.sh


data_dir=/sys/kernel/debug/gcov

if [[ ! -d ${data_dir} ]]; then
  echo "[ERROR] GCOV data directory ${data_dir} does not exist."
  exit 1
fi

yum install -y gcc-c++ wget tar


temp_dir=$(mktemp -d)

echo "[INFO] Start collecting the profiles." | tee -a ${log_file}
find ${data_dir} -type d -exec mkdir -p ${temp_dir}/\{\} \;
find ${data_dir} -name '*.gcda' -exec sh -c 'cat < $0 > '${temp_dir}'/$0' {} \;
find ${data_dir} -name '*.gcno' -exec sh -c 'cp -d $0 '${temp_dir}'/$0' {} \;

pwd

echo "[INFO] Start post-processing the profiles."
find ${temp_dir} -name '*.gcda' >list.txt
/usr/bin/g++ $LKP_SRC/tests/GcovSummaryAddTool.cpp -o calcsum
./calcsum list.txt
rm -f list.txt

profile_dir=/gcovdata
rm -rf ${profile_dir}
mkdir ${profile_dir}
for file in $(find ${temp_dir} -name '*.gcda'); do
  hash_path=$(echo ${file//\//\#})
  name=$(echo ${hash_path#*gcov})
  mv $file ${profile_dir}/$name
done
rm -rf ${temp_dir}
profiles_pkg=/tmp/lkp/result/gcovdata.tar.gz
tar -czf ${profiles_pkg} ${profile_dir}

echo "[INFO] Finished process profiles."

upload_files -t results ${profiles_pkg}


